/**
 * <copyright>
 * </copyright>
 *
 * 
 */
package edu.pku.sei.AMT.resource.amtscript.grammar;

public class AmtscriptGrammarInformationProvider {
	
	public final static org.eclipse.emf.ecore.EStructuralFeature ANONYMOUS_FEATURE = org.eclipse.emf.ecore.EcoreFactory.eINSTANCE.createEAttribute();
	static {
		ANONYMOUS_FEATURE.setName("_");
	}
	
	public final static AmtscriptGrammarInformationProvider INSTANCE = new AmtscriptGrammarInformationProvider();
	
	private java.util.Set<String> keywords;
	
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptKeyword AMTSCRIPT_0_0_0_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptKeyword("transformation", edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptPlaceholder AMTSCRIPT_0_0_0_1 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptPlaceholder(edu.pku.sei.AMT.AmtPackage.eINSTANCE.getTransformation().getEStructuralFeature(edu.pku.sei.AMT.AmtPackage.TRANSFORMATION__NAME), "IDENTIFIER", edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, 0);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptContainment AMTSCRIPT_0_0_0_2_0_0_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptContainment(edu.pku.sei.AMT.AmtPackage.eINSTANCE.getTransformation().getEStructuralFeature(edu.pku.sei.AMT.AmtPackage.TRANSFORMATION__PARAMETERS), edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {edu.pku.sei.AMT.AmtPackage.eINSTANCE.getTypedModel(), }, 0);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptKeyword AMTSCRIPT_0_0_0_2_0_0_1_0_0_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptKeyword(",", edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptContainment AMTSCRIPT_0_0_0_2_0_0_1_0_0_1 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptContainment(edu.pku.sei.AMT.AmtPackage.eINSTANCE.getTransformation().getEStructuralFeature(edu.pku.sei.AMT.AmtPackage.TRANSFORMATION__PARAMETERS), edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {edu.pku.sei.AMT.AmtPackage.eINSTANCE.getTypedModel(), }, 0);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptSequence AMTSCRIPT_0_0_0_2_0_0_1_0_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptSequence(edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, AMTSCRIPT_0_0_0_2_0_0_1_0_0_0, AMTSCRIPT_0_0_0_2_0_0_1_0_0_1);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptChoice AMTSCRIPT_0_0_0_2_0_0_1_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptChoice(edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, AMTSCRIPT_0_0_0_2_0_0_1_0_0);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCompound AMTSCRIPT_0_0_0_2_0_0_1 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCompound(AMTSCRIPT_0_0_0_2_0_0_1_0, edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.STAR);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptSequence AMTSCRIPT_0_0_0_2_0_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptSequence(edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, AMTSCRIPT_0_0_0_2_0_0_0, AMTSCRIPT_0_0_0_2_0_0_1);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptChoice AMTSCRIPT_0_0_0_2_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptChoice(edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, AMTSCRIPT_0_0_0_2_0_0);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCompound AMTSCRIPT_0_0_0_2 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCompound(AMTSCRIPT_0_0_0_2_0, edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.QUESTIONMARK);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptContainment AMTSCRIPT_0_0_0_3 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptContainment(edu.pku.sei.AMT.AmtPackage.eINSTANCE.getTransformation().getEStructuralFeature(edu.pku.sei.AMT.AmtPackage.TRANSFORMATION__KEYS), edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.STAR, new org.eclipse.emf.ecore.EClass[] {edu.pku.sei.AMT.AmtPackage.eINSTANCE.getKey(), }, 0);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptContainment AMTSCRIPT_0_0_0_4 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptContainment(edu.pku.sei.AMT.AmtPackage.eINSTANCE.getTransformation().getEStructuralFeature(edu.pku.sei.AMT.AmtPackage.TRANSFORMATION__RULES), edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.STAR, new org.eclipse.emf.ecore.EClass[] {edu.pku.sei.AMT.AmtPackage.eINSTANCE.getRule(), }, 0);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptSequence AMTSCRIPT_0_0_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptSequence(edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, AMTSCRIPT_0_0_0_0, AMTSCRIPT_0_0_0_1, AMTSCRIPT_0_0_0_2, AMTSCRIPT_0_0_0_3, AMTSCRIPT_0_0_0_4);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptChoice AMTSCRIPT_0_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptChoice(edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, AMTSCRIPT_0_0_0);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptRule AMTSCRIPT_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptRule(edu.pku.sei.AMT.AmtPackage.eINSTANCE.getTransformation(), AMTSCRIPT_0_0, edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptPlaceholder AMTSCRIPT_1_0_0_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptPlaceholder(edu.pku.sei.AMT.AmtPackage.eINSTANCE.getTypedModel().getEStructuralFeature(edu.pku.sei.AMT.AmtPackage.TYPED_MODEL__NAME), "IDENTIFIER", edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, 0);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptKeyword AMTSCRIPT_1_0_0_1 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptKeyword(":", edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptPlaceholder AMTSCRIPT_1_0_0_2 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptPlaceholder(edu.pku.sei.AMT.AmtPackage.eINSTANCE.getTypedModel().getEStructuralFeature(edu.pku.sei.AMT.AmtPackage.TYPED_MODEL__URI), "URI", edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, 0);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptSequence AMTSCRIPT_1_0_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptSequence(edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, AMTSCRIPT_1_0_0_0, AMTSCRIPT_1_0_0_1, AMTSCRIPT_1_0_0_2);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptChoice AMTSCRIPT_1_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptChoice(edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, AMTSCRIPT_1_0_0);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptRule AMTSCRIPT_1 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptRule(edu.pku.sei.AMT.AmtPackage.eINSTANCE.getTypedModel(), AMTSCRIPT_1_0, edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptKeyword AMTSCRIPT_2_0_0_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptKeyword("key", edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptPlaceholder AMTSCRIPT_2_0_0_1 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptPlaceholder(edu.pku.sei.AMT.AmtPackage.eINSTANCE.getKey().getEStructuralFeature(edu.pku.sei.AMT.AmtPackage.KEY__CLASS_NAME), "IDENTIFIER", edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, 0);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptKeyword AMTSCRIPT_2_0_0_2 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptKeyword(":", edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptPlaceholder AMTSCRIPT_2_0_0_3_0_0_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptPlaceholder(edu.pku.sei.AMT.AmtPackage.eINSTANCE.getKey().getEStructuralFeature(edu.pku.sei.AMT.AmtPackage.KEY__FEATURE_NAMES), "KEYFEATURENAME", edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, 0);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptSequence AMTSCRIPT_2_0_0_3_0_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptSequence(edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, AMTSCRIPT_2_0_0_3_0_0_0);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptChoice AMTSCRIPT_2_0_0_3_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptChoice(edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, AMTSCRIPT_2_0_0_3_0_0);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCompound AMTSCRIPT_2_0_0_3 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCompound(AMTSCRIPT_2_0_0_3_0, edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.PLUS);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptKeyword AMTSCRIPT_2_0_0_4 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptKeyword(";", edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptSequence AMTSCRIPT_2_0_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptSequence(edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, AMTSCRIPT_2_0_0_0, AMTSCRIPT_2_0_0_1, AMTSCRIPT_2_0_0_2, AMTSCRIPT_2_0_0_3, AMTSCRIPT_2_0_0_4);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptChoice AMTSCRIPT_2_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptChoice(edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, AMTSCRIPT_2_0_0);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptRule AMTSCRIPT_2 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptRule(edu.pku.sei.AMT.AmtPackage.eINSTANCE.getKey(), AMTSCRIPT_2_0, edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptKeyword AMTSCRIPT_3_0_0_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptKeyword("rule", edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptPlaceholder AMTSCRIPT_3_0_0_1_0_0_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptPlaceholder(edu.pku.sei.AMT.AmtPackage.eINSTANCE.getRule().getEStructuralFeature(edu.pku.sei.AMT.AmtPackage.RULE__MODIFIERS), "IDENTIFIER", edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, 0);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptSequence AMTSCRIPT_3_0_0_1_0_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptSequence(edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, AMTSCRIPT_3_0_0_1_0_0_0);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptChoice AMTSCRIPT_3_0_0_1_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptChoice(edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, AMTSCRIPT_3_0_0_1_0_0);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCompound AMTSCRIPT_3_0_0_1 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCompound(AMTSCRIPT_3_0_0_1_0, edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.STAR);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptPlaceholder AMTSCRIPT_3_0_0_2 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptPlaceholder(edu.pku.sei.AMT.AmtPackage.eINSTANCE.getRule().getEStructuralFeature(edu.pku.sei.AMT.AmtPackage.RULE__NAME), "IDENTIFIER", edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, 0);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptKeyword AMTSCRIPT_3_0_0_3 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptKeyword("{", edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptContainment AMTSCRIPT_3_0_0_4_0_0_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptContainment(edu.pku.sei.AMT.AmtPackage.eINSTANCE.getRule().getEStructuralFeature(edu.pku.sei.AMT.AmtPackage.RULE__VARIABLES), edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {edu.pku.sei.AMT.AmtPackage.eINSTANCE.getVariable(), }, 0);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptKeyword AMTSCRIPT_3_0_0_4_0_0_1 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptKeyword(";", edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptSequence AMTSCRIPT_3_0_0_4_0_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptSequence(edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, AMTSCRIPT_3_0_0_4_0_0_0, AMTSCRIPT_3_0_0_4_0_0_1);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptChoice AMTSCRIPT_3_0_0_4_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptChoice(edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, AMTSCRIPT_3_0_0_4_0_0);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCompound AMTSCRIPT_3_0_0_4 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCompound(AMTSCRIPT_3_0_0_4_0, edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.STAR);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptContainment AMTSCRIPT_3_0_0_5 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptContainment(edu.pku.sei.AMT.AmtPackage.eINSTANCE.getRule().getEStructuralFeature(edu.pku.sei.AMT.AmtPackage.RULE__SECTIONS), edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.STAR, new org.eclipse.emf.ecore.EClass[] {edu.pku.sei.AMT.AmtPackage.eINSTANCE.getSection(), }, 0);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptKeyword AMTSCRIPT_3_0_0_6 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptKeyword("}", edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptSequence AMTSCRIPT_3_0_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptSequence(edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, AMTSCRIPT_3_0_0_0, AMTSCRIPT_3_0_0_1, AMTSCRIPT_3_0_0_2, AMTSCRIPT_3_0_0_3, AMTSCRIPT_3_0_0_4, AMTSCRIPT_3_0_0_5, AMTSCRIPT_3_0_0_6);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptChoice AMTSCRIPT_3_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptChoice(edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, AMTSCRIPT_3_0_0);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptRule AMTSCRIPT_3 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptRule(edu.pku.sei.AMT.AmtPackage.eINSTANCE.getRule(), AMTSCRIPT_3_0, edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptPlaceholder AMTSCRIPT_4_0_0_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptPlaceholder(edu.pku.sei.AMT.AmtPackage.eINSTANCE.getObjectVariable().getEStructuralFeature(edu.pku.sei.AMT.AmtPackage.OBJECT_VARIABLE__NAME), "IDENTIFIER", edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, 0);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptKeyword AMTSCRIPT_4_0_0_1 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptKeyword(":", edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptPlaceholder AMTSCRIPT_4_0_0_2 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptPlaceholder(edu.pku.sei.AMT.AmtPackage.eINSTANCE.getObjectVariable().getEStructuralFeature(edu.pku.sei.AMT.AmtPackage.OBJECT_VARIABLE__SCOPE), "IDENTIFIER", edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, 0);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptKeyword AMTSCRIPT_4_0_0_3 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptKeyword("::", edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptPlaceholder AMTSCRIPT_4_0_0_4 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptPlaceholder(edu.pku.sei.AMT.AmtPackage.eINSTANCE.getObjectVariable().getEStructuralFeature(edu.pku.sei.AMT.AmtPackage.OBJECT_VARIABLE__TYPE), "IDENTIFIER", edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, 0);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptSequence AMTSCRIPT_4_0_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptSequence(edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, AMTSCRIPT_4_0_0_0, AMTSCRIPT_4_0_0_1, AMTSCRIPT_4_0_0_2, AMTSCRIPT_4_0_0_3, AMTSCRIPT_4_0_0_4);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptChoice AMTSCRIPT_4_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptChoice(edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, AMTSCRIPT_4_0_0);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptRule AMTSCRIPT_4 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptRule(edu.pku.sei.AMT.AmtPackage.eINSTANCE.getObjectVariable(), AMTSCRIPT_4_0, edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptPlaceholder AMTSCRIPT_5_0_0_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptPlaceholder(edu.pku.sei.AMT.AmtPackage.eINSTANCE.getPrimitiveVariable().getEStructuralFeature(edu.pku.sei.AMT.AmtPackage.PRIMITIVE_VARIABLE__NAME), "IDENTIFIER", edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, 0);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptKeyword AMTSCRIPT_5_0_0_1 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptKeyword(":", edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptPlaceholder AMTSCRIPT_5_0_0_2 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptPlaceholder(edu.pku.sei.AMT.AmtPackage.eINSTANCE.getPrimitiveVariable().getEStructuralFeature(edu.pku.sei.AMT.AmtPackage.PRIMITIVE_VARIABLE__TYPE), "IDENTIFIER", edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, 0);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptSequence AMTSCRIPT_5_0_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptSequence(edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, AMTSCRIPT_5_0_0_0, AMTSCRIPT_5_0_0_1, AMTSCRIPT_5_0_0_2);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptChoice AMTSCRIPT_5_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptChoice(edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, AMTSCRIPT_5_0_0);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptRule AMTSCRIPT_5 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptRule(edu.pku.sei.AMT.AmtPackage.eINSTANCE.getPrimitiveVariable(), AMTSCRIPT_5_0, edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptPlaceholder AMTSCRIPT_6_0_0_0_0_0_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptPlaceholder(edu.pku.sei.AMT.AmtPackage.eINSTANCE.getSection().getEStructuralFeature(edu.pku.sei.AMT.AmtPackage.SECTION__MODIFIERS), "IDENTIFIER", edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, 0);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptSequence AMTSCRIPT_6_0_0_0_0_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptSequence(edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, AMTSCRIPT_6_0_0_0_0_0_0);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptChoice AMTSCRIPT_6_0_0_0_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptChoice(edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, AMTSCRIPT_6_0_0_0_0_0);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCompound AMTSCRIPT_6_0_0_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCompound(AMTSCRIPT_6_0_0_0_0, edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.STAR);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptKeyword AMTSCRIPT_6_0_0_1_0_0_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptKeyword("for", edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptPlaceholder AMTSCRIPT_6_0_0_1_0_0_1 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptPlaceholder(edu.pku.sei.AMT.AmtPackage.eINSTANCE.getSection().getEStructuralFeature(edu.pku.sei.AMT.AmtPackage.SECTION__MODEL_NAME), "IDENTIFIER", edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, 0);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptSequence AMTSCRIPT_6_0_0_1_0_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptSequence(edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, AMTSCRIPT_6_0_0_1_0_0_0, AMTSCRIPT_6_0_0_1_0_0_1);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptChoice AMTSCRIPT_6_0_0_1_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptChoice(edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, AMTSCRIPT_6_0_0_1_0_0);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCompound AMTSCRIPT_6_0_0_1 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCompound(AMTSCRIPT_6_0_0_1_0, edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.QUESTIONMARK);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptKeyword AMTSCRIPT_6_0_0_2 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptKeyword("{", edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptPlaceholder AMTSCRIPT_6_0_0_3_0_0_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptPlaceholder(edu.pku.sei.AMT.AmtPackage.eINSTANCE.getSection().getEStructuralFeature(edu.pku.sei.AMT.AmtPackage.SECTION__REFERRED_VARIABLES), "IDENTIFIER", edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, 0);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptKeyword AMTSCRIPT_6_0_0_3_0_0_1_0_0_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptKeyword(",", edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptPlaceholder AMTSCRIPT_6_0_0_3_0_0_1_0_0_1 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptPlaceholder(edu.pku.sei.AMT.AmtPackage.eINSTANCE.getSection().getEStructuralFeature(edu.pku.sei.AMT.AmtPackage.SECTION__REFERRED_VARIABLES), "IDENTIFIER", edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, 0);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptSequence AMTSCRIPT_6_0_0_3_0_0_1_0_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptSequence(edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, AMTSCRIPT_6_0_0_3_0_0_1_0_0_0, AMTSCRIPT_6_0_0_3_0_0_1_0_0_1);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptChoice AMTSCRIPT_6_0_0_3_0_0_1_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptChoice(edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, AMTSCRIPT_6_0_0_3_0_0_1_0_0);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCompound AMTSCRIPT_6_0_0_3_0_0_1 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCompound(AMTSCRIPT_6_0_0_3_0_0_1_0, edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.STAR);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptKeyword AMTSCRIPT_6_0_0_3_0_0_2 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptKeyword(";", edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptSequence AMTSCRIPT_6_0_0_3_0_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptSequence(edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, AMTSCRIPT_6_0_0_3_0_0_0, AMTSCRIPT_6_0_0_3_0_0_1, AMTSCRIPT_6_0_0_3_0_0_2);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptChoice AMTSCRIPT_6_0_0_3_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptChoice(edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, AMTSCRIPT_6_0_0_3_0_0);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCompound AMTSCRIPT_6_0_0_3 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCompound(AMTSCRIPT_6_0_0_3_0, edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.QUESTIONMARK);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptContainment AMTSCRIPT_6_0_0_4_0_0_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptContainment(edu.pku.sei.AMT.AmtPackage.eINSTANCE.getSection().getEStructuralFeature(edu.pku.sei.AMT.AmtPackage.SECTION__LINKS), edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {edu.pku.sei.AMT.AmtPackage.eINSTANCE.getLinkConstraint(), }, 0);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptKeyword AMTSCRIPT_6_0_0_4_0_0_1_0_0_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptKeyword(",", edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptContainment AMTSCRIPT_6_0_0_4_0_0_1_0_0_1 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptContainment(edu.pku.sei.AMT.AmtPackage.eINSTANCE.getSection().getEStructuralFeature(edu.pku.sei.AMT.AmtPackage.SECTION__LINKS), edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {edu.pku.sei.AMT.AmtPackage.eINSTANCE.getLinkConstraint(), }, 0);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptSequence AMTSCRIPT_6_0_0_4_0_0_1_0_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptSequence(edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, AMTSCRIPT_6_0_0_4_0_0_1_0_0_0, AMTSCRIPT_6_0_0_4_0_0_1_0_0_1);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptChoice AMTSCRIPT_6_0_0_4_0_0_1_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptChoice(edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, AMTSCRIPT_6_0_0_4_0_0_1_0_0);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCompound AMTSCRIPT_6_0_0_4_0_0_1 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCompound(AMTSCRIPT_6_0_0_4_0_0_1_0, edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.STAR);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptKeyword AMTSCRIPT_6_0_0_4_0_0_2 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptKeyword(";", edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptSequence AMTSCRIPT_6_0_0_4_0_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptSequence(edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, AMTSCRIPT_6_0_0_4_0_0_0, AMTSCRIPT_6_0_0_4_0_0_1, AMTSCRIPT_6_0_0_4_0_0_2);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptChoice AMTSCRIPT_6_0_0_4_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptChoice(edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, AMTSCRIPT_6_0_0_4_0_0);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCompound AMTSCRIPT_6_0_0_4 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCompound(AMTSCRIPT_6_0_0_4_0, edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.QUESTIONMARK);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptPlaceholder AMTSCRIPT_6_0_0_5_0_0_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptPlaceholder(edu.pku.sei.AMT.AmtPackage.eINSTANCE.getSection().getEStructuralFeature(edu.pku.sei.AMT.AmtPackage.SECTION__EXPRESSIONS), "EXPR", edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, 0);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptKeyword AMTSCRIPT_6_0_0_5_0_0_1 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptKeyword(";", edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptSequence AMTSCRIPT_6_0_0_5_0_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptSequence(edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, AMTSCRIPT_6_0_0_5_0_0_0, AMTSCRIPT_6_0_0_5_0_0_1);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptChoice AMTSCRIPT_6_0_0_5_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptChoice(edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, AMTSCRIPT_6_0_0_5_0_0);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCompound AMTSCRIPT_6_0_0_5 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCompound(AMTSCRIPT_6_0_0_5_0, edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.STAR);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptContainment AMTSCRIPT_6_0_0_6 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptContainment(edu.pku.sei.AMT.AmtPackage.eINSTANCE.getSection().getEStructuralFeature(edu.pku.sei.AMT.AmtPackage.SECTION__SECTIONS), edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.STAR, new org.eclipse.emf.ecore.EClass[] {edu.pku.sei.AMT.AmtPackage.eINSTANCE.getSection(), }, 0);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptKeyword AMTSCRIPT_6_0_0_7 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptKeyword("}", edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptSequence AMTSCRIPT_6_0_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptSequence(edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, AMTSCRIPT_6_0_0_0, AMTSCRIPT_6_0_0_1, AMTSCRIPT_6_0_0_2, AMTSCRIPT_6_0_0_3, AMTSCRIPT_6_0_0_4, AMTSCRIPT_6_0_0_5, AMTSCRIPT_6_0_0_6, AMTSCRIPT_6_0_0_7);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptChoice AMTSCRIPT_6_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptChoice(edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, AMTSCRIPT_6_0_0);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptRule AMTSCRIPT_6 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptRule(edu.pku.sei.AMT.AmtPackage.eINSTANCE.getSection(), AMTSCRIPT_6_0, edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptPlaceholder AMTSCRIPT_7_0_0_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptPlaceholder(edu.pku.sei.AMT.AmtPackage.eINSTANCE.getLinkConstraint().getEStructuralFeature(edu.pku.sei.AMT.AmtPackage.LINK_CONSTRAINT__SOURCE), "IDENTIFIER", edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, 0);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptKeyword AMTSCRIPT_7_0_0_1 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptKeyword(".", edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptPlaceholder AMTSCRIPT_7_0_0_2 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptPlaceholder(edu.pku.sei.AMT.AmtPackage.eINSTANCE.getLinkConstraint().getEStructuralFeature(edu.pku.sei.AMT.AmtPackage.LINK_CONSTRAINT__REF_NAME), "IDENTIFIER", edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, 0);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptKeyword AMTSCRIPT_7_0_0_3 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptKeyword("=", edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptPlaceholder AMTSCRIPT_7_0_0_4 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptPlaceholder(edu.pku.sei.AMT.AmtPackage.eINSTANCE.getLinkConstraint().getEStructuralFeature(edu.pku.sei.AMT.AmtPackage.LINK_CONSTRAINT__TARGET), "IDENTIFIER", edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, 0);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptSequence AMTSCRIPT_7_0_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptSequence(edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, AMTSCRIPT_7_0_0_0, AMTSCRIPT_7_0_0_1, AMTSCRIPT_7_0_0_2, AMTSCRIPT_7_0_0_3, AMTSCRIPT_7_0_0_4);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptChoice AMTSCRIPT_7_0 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptChoice(edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE, AMTSCRIPT_7_0_0);
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptRule AMTSCRIPT_7 = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptRule(edu.pku.sei.AMT.AmtPackage.eINSTANCE.getLinkConstraint(), AMTSCRIPT_7_0, edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptCardinality.ONE);
	
	public static String getSyntaxElementID(edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptSyntaxElement syntaxElement) {
		if (syntaxElement == null) {
			// null indicates EOF
			return "<EOF>";
		}
		for (java.lang.reflect.Field field : edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptGrammarInformationProvider.class.getFields()) {
			Object fieldValue;
			try {
				fieldValue = field.get(null);
				if (fieldValue == syntaxElement) {
					String id = field.getName();
					return id;
				}
			} catch (Exception e) { }
		}
		return null;
	}
	
	public static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptSyntaxElement getSyntaxElementByID(String syntaxElementID) {
		try {
			return (edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptSyntaxElement) edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptGrammarInformationProvider.class.getField(syntaxElementID).get(null);
		} catch (Exception e) {
			return null;
		}
	}
	
	public final static edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptRule[] RULES = new edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptRule[] {
		AMTSCRIPT_0,
		AMTSCRIPT_1,
		AMTSCRIPT_2,
		AMTSCRIPT_3,
		AMTSCRIPT_4,
		AMTSCRIPT_5,
		AMTSCRIPT_6,
		AMTSCRIPT_7,
	};
	
	/**
	 * Returns all keywords of the grammar. This includes all literals for boolean and
	 * enumeration terminals.
	 */
	public java.util.Set<String> getKeywords() {
		if (this.keywords == null) {
			this.keywords = new java.util.LinkedHashSet<String>();
			for (edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptRule rule : RULES) {
				findKeywords(rule, this.keywords);
			}
		}
		return keywords;
	}
	
	/**
	 * Finds all keywords in the given element and its children and adds them to the
	 * set. This includes all literals for boolean and enumeration terminals.
	 */
	private void findKeywords(edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptSyntaxElement element, java.util.Set<String> keywords) {
		if (element instanceof edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptKeyword) {
			keywords.add(((edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptKeyword) element).getValue());
		} else if (element instanceof edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptBooleanTerminal) {
			keywords.add(((edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptBooleanTerminal) element).getTrueLiteral());
			keywords.add(((edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptBooleanTerminal) element).getFalseLiteral());
		} else if (element instanceof edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptEnumerationTerminal) {
			edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptEnumerationTerminal terminal = (edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptEnumerationTerminal) element;
			for (String key : terminal.getLiteralMapping().keySet()) {
				keywords.add(key);
			}
		}
		for (edu.pku.sei.AMT.resource.amtscript.grammar.AmtscriptSyntaxElement child : element.getChildren()) {
			findKeywords(child, this.keywords);
		}
	}
	
}
